1. Field of the Invention
The present invention relates in general to agent computer programs, including mobile agents, intelligent agents, collaborating agents, internet agents, and task-specific agents, and more particularly to a communication infrastructure for communication between agents, between agents and agent-hosting servers, and between agent-hosting servers.
2. Description of the Related Art
Java virtual machines are rapidly becoming available on all kinds of computing platforms, from portables to desktops to workstations to mainframes. For the first time in computing history, there may soon be available a virtual, homogeneous platform for distributed and parallel computing on a global scale. The basic elements of this computing platform are distributed Java objects. Prior to JDK 1.1 [The Java Development Kit (JDK), URL=http://java.sun.com/products/jdk], one had to use the low-level socket-based class library (java.net package) for communication between distributed Java objects. With JDK 1.1, one can now use Java RMI (Remote Method Invocation) for direct method invocation between Java distributed objects. Java RMI raises the level of communication to that of objects, and it can pass objects by value using Java object Serialization. However, Java RMI is stationary (remote objects), rigid (predefined methods calls), point-to-point, and connection-oriented. Therefore, it is still too low-level and inflexible for direct use in many applications, such as agent-based applications.
The term "agent" has been used to mean different things in different contexts [D. Chess, B. Grosof, C. Harrison, D. Levine, C. Paris, and G. Tsudik, "Itinerant Agents for Mobile Computing", IBM Research Report, RC 20010, IBM Research Division, March 1995; C. Harrison, D. Chess, and A. Kershenbaum, "Mobile Agents: Are they a good idea?", IBM Research Report, IBM Research Division, March 1995.]--from intelligent agents to internet agents to mobile agents to task-specific agents to user agents, just to name a few. A key, distinct characteristic of agents, from our perspective, is that agents are autonomous. An agent has its own identity, thread of execution, and lifecycle. It is this characteristic that makes the agent system, and specifically Java agent system, a unique, flexible and powerful paradigm for distributed and parallel computing [D. T. Chang and D. B. Lange, "Mobile Agents: A New Paradigm for Distributed Object Computing on the WWW", in Proceedings of the OOPSLA96 Workshop: Toward the Integration of WWW and Distributed Object Technology, October, 1996; MA'97 (First International Workshop on Mobile Agents 97), URL=http:www.informatik.uni-stuttgart.deripvr/vs/ws/ma971ma97.html].
Given that Java agents are autonomous and can be executing independently on various Java virtual machines throughout a vast computer network, what makes them useful and powerful in carrying out parallel and distributed computing is that they must be able to communicate with each other in a dynamic and flexible fashion: the mechanism must allow agents to communicate when one of the agents moves to a different address space (mobile agents), when they must communicate at a higher level than methods calls (intelligent agents), when they need to communicate as a group (collaborating agents), and when a part of computer network is down or one of the agents is not available (disconnected operation).
Most of the currently available Java agent systems have focused their support on agent mobility. They provide limited support for inter-agent communication. Among these, Voyager [Voyager, ObjectSpace, URL=http://www.objectspace.com/Voyager/voyager.html; "Voyager Core Package Technical Overview", ObjectSpace, March, 1997], Concordia [Concordia, Mitsubishi Electric ITA, URL=http://www.meitca.com/HSL/Projects/Concordia; "Concordia: An Infrastructure for Collaborating Mobile Agents", Mitsubishi Electric ITA, in First International Workshop on Mobile Agents 97 (MA'97), April, 1997; "Mobile Agent Computing", A White Paper, Mitsubishi Electric ITA, Feb. 28, 1997], and Aglets [Aglets Workbench, IBM, URL=http://www.trl.ibm.co.jp/aglets] are the best known.
Voyager defines the notion of a virtual object, which is basically a proxy to a remote object. In Voyager any object can be virtualized using a program called vc, which is a utility for converting regular classes to virtual classes. Messages are sent--via method calls--to remote objects through their local virtual references. Voyager messages can be sent in a synchronous, deferred, or asynchronous (one-way) mode. Object mobility is achieved through sending a "move" message to a remote object.
Concordia supports two types of asynchronous distributed events for inter-agent communication: selected events and group-oriented events. In the select-event messaging, an agent registers the type of events it would like to receive with an event manager. When the event manager receives an event of the registered type it forwards the event to the registered agent. Concordia also supports group-oriented events. An agent can join a group of agents. When one of the agents initiates an event, the event is forwarded to all the agents in the group. Agent mobility is achieved through the use of itineraries, which involves message passing between collaborating Concordia servers.
In Aglets, agents can communicate with each other by sending messages through their proxies. The messages can be sent in a synchronous or deferred mode. Agent mobility is achieved by directly dispatching an agent (through its proxy) or through the use of itineraries. This involves message passing between collaborating agent contexts using the agent transfer protocol.
CORBA [The Common Object Request Broker: Architecture and Specification, Revision 2.0, OMG, July 1995] provides an architecture for stationary objects to communicate with each other in a distributed and heterogeneous environment. It defines a framework for remote method invocation using the IIOP (Internet Inter-ORB Protocol). Under the cover this involves sending request messages and receiving response messages between collaborating hosts.
KQML is a language of communication for intelligent agents. KQML is based on using primitives called performatives. Performatives define permissible actions or operations that agents use for communication. A performative has a name (which specifies what the performative means) and the following fields: sender, receiver, language (language of actual communication: prolog, SQL etc.), ontology (term definitions for the content), correlation id, and content.
JavaSpace ["JavaSpace Specification", Revision 0.3, Sun Microsystems, Inc. March 1997] is a Java adaptation for the internet of the pattern-matching shared memory paradigm provided by Linda [. Carriero and D. Gelemter, "Linda in Context", Communications of the ACM., 32(4), pp. 444-458, April, 1989].
Conventional methods have failed to provide a uniform, flexible and robust underlying communication infrastructure for agent systems for communication between agents, between agents and agent-hosting servers, and between agent-hosting servers. Thus, there is a clearly felt need for a method of, system for, and computer program product for, providing a flexible and robust underlying communication infrastructure for agent systems for communication between agents, between agents and agent-hosting servers, and between agent-hosting servers.